const path = require('path')
// const webpack = require('webpack')
// const CompressionWebpackPlugin = require('compression-webpack-plugin')
// const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer')

function resolve(dir) {
  return path.join(__dirname, './', dir)
}
const pagesObject = {
  index: 'index.html'
}

const pages = {
  index: resolve('client/static/test.js')
}

module.exports = {
  // 基本路径
  publicPath: '/static',
  // 输出文件目录
  outputDir: resolve('app/public/static'),
  // 放置生成的静态资源,(相对于 outputDir 的) 目录
  assetsDir: 'static',
  lintOnSave: false,
  // indexPath: '../views/index.ejs',
  // 加速生产环境构建
  // productionSourceMap: false,
  // devServer: {
  //   proxy: {
  //     '/api': {
  //       target: 'http://oa.sandbox.unintelli.com/',
  //       // target: 'http://homestay.qixinyun.com/',
  //       changeOrigin: true,
  //       pathRewrite: {
  //         '^/api': '/'
  //       }
  //     }
  //   }
  // },
  pages,
  chainWebpack: config => {
    
    // 这里是对环境的配置，不同环境对应不同的BASE_API，以便axios的请求地址不同
    // config.plugin('define').tap(args => {
    //   const argv = process.argv
    //   const mode = argv[argv.indexOf('--project-mode') + 1]
    //   args[0]['process.env'].MODE = `"${mode}"`
    //   args[0]['process.env'].BASE_API = '"http://portal.homestay.com/"'
    //   return args
    // })
    // Object.keys(pagesObject).forEach(page => {
    //   config.plugins.delete(`preload-${page}`)
    //   config.plugins.delete(`prefetch-${page}`)
    // })

    // config.resolve.alias
    //   .set('@', resolve('src'))
    //   .set('assets', resolve('src/assets'))
    //   // validate
    //   .set('validate-hzlh', resolve('src/bases/validate/hzlh'))
    //   .set('validate-zj', resolve('src/bases/validate/zj'))
    //   .set('validate-jr', resolve('src/bases/validate/jr'))
    //   // translate
    //   .set('translate-hzlh', resolve('src/bases/translate/hzlh'))
    //   .set('translate-zj', resolve('src/bases/translate/zj'))
    //   .set('translate-jr', resolve('src/bases/translate/jr'))
    //   // interface
    //   .set('interface-hzlh', resolve('src/bases/interface/hzlh'))
    //   .set('interface-zj', resolve('src/bases/interface/zj'))
    //   .set('interface-jr', resolve('src/bases/interface/jr'))
    //   // api
    //   .set('api-hzlh', resolve('src/bases/api/hzlh'))
    //   .set('api-zj', resolve('src/bases/api/zj'))
    //   .set('api-jr', resolve('src/bases/api/jr'))

    /**
     * 添加 CDN 参数到htmlWebpackPlugin配置中， 详见public/index.html 修改
     */
    // config.plugin('html-index').tap(args => {
    //   if (process.env.NODE_ENV === 'production') {
    //     args[0].cdn = cdn.build
    //   }
    //   if (process.env.NODE_ENV === 'development') {
    //     args[0].cdn = cdn.dev
    //   }
    //   return args
    // })

    // svg loader
    // const svgRule = config.module.rule('svg') // 找到svg-loader
    // svgRule.uses.clear() // 清除已有的loader, 如果不这样做会添加在此loader之后
    // svgRule.exclude.add(/node_modules/) // 正则匹配排除node_modules目录
    // svgRule // 添加 svg 新的 loader 处理
    //   .test(/\.svg$/)
    //   .use('svg-sprite-loader')
    //   .loader('svg-sprite-loader')
    //   .options({
    //     symbolId: 'icon-[name]'
    //   })

    // 修改images loader 添加svg处理
    // const imagesRule = config.module.rule('images')
    // imagesRule.exclude.add(resolve('src/icons'))
    // config.module.rule('images').test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)
    

    // config.plugins.delete('html')
    // config.plugins.delete(`preload`)
    // config.plugins.delete(`prefetch`)
    // console.log(config.plugins)
    for(let name in pages) {
      config.plugins.delete(`html-${name}`)
      config.plugins.delete(`preload-${name}`)
      config.plugins.delete(`prefetch-${name}`)
    }
  },

  // 修改webpack config, 使其不打包externals下的资源
  configureWebpack: config => {
    
    // config.plugins.push(
    //   new BundleAnalyzerPlugin({ analyzerPort: 8919 })
    // )
    // config.plugins.push(
    //   new webpack.optimize.LimitChunkCountPlugin({
    //     maxChunks: 2
    //   })
    // )
    // const myConfig = {}
    // if (process.env.NODE_ENV === 'production') {
    //   // 1. 生产环境 npm 包转 CDN
    //   myConfig.externals = externals

    //   myConfig.plugins = []
    //   // 2. 构建时开启gzip，降低服务器压缩对CPU资源的占用，服务器也要相应开启gzip
    //   productionGzip &&
    //     myConfig.plugins.push(
    //       new CompressionWebpackPlugin({
    //         test: new RegExp(
    //           '\\.(' + productionGzipExtensions.join('|') + ')$'
    //         ),
    //         threshold: 8192,
    //         minRatio: 0.8
    //       })
    //     )
    // }
    // if (process.env.NODE_ENV === 'development') {
    //   /**
    //    * 关闭host check，方便使用ngrok之类的内网转发工具
    //    */
    //   myConfig.devServer = {
    //     disableHostCheck: true
    //   }
    // }
    // return myConfig
  }
}
